﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Sisco.AplicacionEscritorio.Equipo;
using Sisco.AplicacionEscritorio.Equipo.Movimiento;
using Sisco.AplicacionEscritorio.Maestro;
using Sisco.AplicacionEscritorio.Problema;
using Sisco.AplicacionEscritorio.Programa;
using Sisco.AplicacionEscritorio.Reporte;
using Sisco.AplicacionEscritorio.Usuario;

namespace Sisco.AplicacionEscritorio
{
    public partial class Principal : Form
    {
        private int childFormNumber = 0;
        private AccesoDatos.USUARIO UsuarioSistema;

        public Principal()
        {
            InitializeComponent();
        }

        public Principal(AccesoDatos.USUARIO UsuarioSistema) : this()
        {
            // TODO: Complete member initialization
            this.UsuarioSistema = UsuarioSistema;
        }

        private void Principal_Load(object sender, EventArgs e)
        {
            if (UsuarioSistema != null)
            {
                this.Text = string.Format("{0} - Usuario: {1}", this.Text, UsuarioSistema.NOMBRECOMPLETO != null ? UsuarioSistema.NOMBRECOMPLETO.Trim() : string.Empty);
            }
        }

        private void ShowNewForm(object sender, EventArgs e)
        {
            Form childForm = new Form();
            childForm.MdiParent = this;
            childForm.Text = "Ventana " + childFormNumber++;
            childForm.Show();
        }

        private void OpenFile(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
            openFileDialog.Filter = "Archivos de texto (*.txt)|*.txt|Todos los archivos (*.*)|*.*";
            if (openFileDialog.ShowDialog(this) == DialogResult.OK)
            {
                string FileName = openFileDialog.FileName;
            }
        }

        private void SaveAsToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
            saveFileDialog.Filter = "Archivos de texto (*.txt)|*.txt|Todos los archivos (*.*)|*.*";
            if (saveFileDialog.ShowDialog(this) == DialogResult.OK)
            {
                string FileName = saveFileDialog.FileName;
            }
        }

        private void ExitToolsStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
            Application.Exit();
        }

        private void CutToolStripMenuItem_Click(object sender, EventArgs e)
        {
        }

        private void CopyToolStripMenuItem_Click(object sender, EventArgs e)
        {
        }

        private void PasteToolStripMenuItem_Click(object sender, EventArgs e)
        {
        }

        private void ToolBarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            toolStrip.Visible = toolBarToolStripMenuItem.Checked;
        }

        private void StatusBarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            statusStrip.Visible = statusBarToolStripMenuItem.Checked;
        }

        private void CascadeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LayoutMdi(MdiLayout.Cascade);
        }

        private void TileVerticalToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LayoutMdi(MdiLayout.TileVertical);
        }

        private void TileHorizontalToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LayoutMdi(MdiLayout.TileHorizontal);
        }

        private void ArrangeIconsToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LayoutMdi(MdiLayout.ArrangeIcons);
        }

        private void CloseAllToolStripMenuItem_Click(object sender, EventArgs e)
        {
            foreach (Form childForm in MdiChildren)
            {
                childForm.Close();
            }
        }

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            RegistroProblema iuRegistro;
            bool isOpen = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Text == "Registro de problema")
                {
                    isOpen = true;
                    f.Focus();
                    break;
                }
            }
            if (isOpen == false)
            {
                iuRegistro = new RegistroProblema(UsuarioSistema);
                iuRegistro.MdiParent = this;
                iuRegistro.Show();
            }
        }

        private void toolRegUsuario_Click(object sender, EventArgs e)
        {
            Registro_Usuario iuRegistro;
            bool isOpen = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Text == "Registro de usuario")
                {
                    isOpen = true;
                    f.Focus();
                    break;
                }
            }
            if (isOpen == false)
            {
                iuRegistro = new Registro_Usuario(UsuarioSistema);
                iuRegistro.MdiParent = this;
                iuRegistro.Show();
            }
        }

        private void toolRegEquipo_Click(object sender, EventArgs e)
        {
            RegistroEquipo iuRegistro;
            bool isOpen = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Text == "Registro de equipo")
                {
                    isOpen = true;
                    f.Focus();
                    break;
                }
            }
            if (isOpen == false)
            {
                iuRegistro = new RegistroEquipo(UsuarioSistema);
                iuRegistro.MdiParent = this;
                iuRegistro.Show();
            }
        }

        private void toolMovimiento_Click(object sender, EventArgs e)
        {
            RegistroMovimiento iuRegistro;
            bool isOpen = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Text == "Registrar movimiento")
                {
                    isOpen = true;
                    f.Focus();
                    break;
                }
            }
            if (isOpen == false)
            {
                iuRegistro = new RegistroMovimiento(UsuarioSistema);
                iuRegistro.MdiParent = this;
                iuRegistro.Show();
            }
        }

        private void asignarEquipoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            AsignarEquipo iuAsignarEquipo;
            bool isOpen = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Text == "Asignación de equipos")
                {
                    isOpen = true;
                    f.Focus();
                    break;
                }
            }
            if (isOpen == false)
            {
                iuAsignarEquipo = new AsignarEquipo(UsuarioSistema);
                iuAsignarEquipo.MdiParent = this;
                iuAsignarEquipo.Show();
            }
        }

        private void asignarProgramaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            AsignarPrograma iuAsignarEquipo = new AsignarPrograma();
            bool isOpen = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Text == "Asignar programa")
                {
                    isOpen = true;
                    f.Focus();
                    break;
                }
            }
            if (isOpen == false)
            {
                iuAsignarEquipo = new AsignarPrograma();
                iuAsignarEquipo.MdiParent = this;
                iuAsignarEquipo.Show();
            }
        }

        private void toolVerAsistReparador_Click(object sender, EventArgs e)
        {
            ListadoProblema iuListadoProblema;
            bool isOpen = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Text == "Listado de problemas")
                {
                    isOpen = true;
                    f.Focus();
                    break;
                }
            }
            if (isOpen == false)
            {
                iuListadoProblema = new ListadoProblema(UsuarioSistema);
                iuListadoProblema.MdiParent = this;
                iuListadoProblema.Show();
            }
        }

        private void busquedaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            BusquedaEquipo iuBusquedaEquipo = new BusquedaEquipo();
            bool isOpen = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Text == "Búsqueda de equipo")
                {
                    isOpen = true;
                    f.Focus();
                    break;
                }
            }
            if (isOpen == false)
            {
                iuBusquedaEquipo = new BusquedaEquipo();
                iuBusquedaEquipo.MdiParent = this;
                iuBusquedaEquipo.Show();
            }
        }

        private void tipoDeEquipoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            TipoEquipo iuTipoEquipo = new TipoEquipo();
            bool isOpen = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Text == "Tipo de equipo")
                {
                    isOpen = true;
                    f.Focus();
                    break;
                }
            }
            if (isOpen == false)
            {
                iuTipoEquipo = new TipoEquipo();
                iuTipoEquipo.MdiParent = this;
                iuTipoEquipo.Show();
            }
        }

        private void tipoDeProblemaToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            TipoProblema iuTipoProblema = new TipoProblema();
            bool isOpen = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Text == "Tipo de problema")
                {
                    isOpen = true;
                    f.Focus();
                    break;
                }
            }
            if (isOpen == false)
            {
                iuTipoProblema = new TipoProblema();
                iuTipoProblema.MdiParent = this;
                iuTipoProblema.Show();
            }
        }

        private void casosDeProblemaToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            CasoProblema iuCasoProblema = new CasoProblema();
            bool isOpen = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Text == "Casos del problema")
                {
                    isOpen = true;
                    f.Focus();
                    break;
                }
            }
            if (isOpen == false)
            {
                iuCasoProblema = new CasoProblema();
                iuCasoProblema.MdiParent = this;
                iuCasoProblema.Show();
            }
        }

        private void empresaToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            Empresa iuEmpresa = new Empresa();
            bool isOpen = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Text == "Empresa")
                {
                    isOpen = true;
                    f.Focus();
                    break;
                }
            }
            if (isOpen == false)
            {
                iuEmpresa = new Empresa();
                iuEmpresa.MdiParent = this;
                iuEmpresa.Show();
            }
        }

        private void sucursalToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            Sucursal iuSucursal = new Sucursal();
            bool isOpen = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Text == "Sucursal")
                {
                    isOpen = true;
                    f.Focus();
                    break;
                }
            }
            if (isOpen == false)
            {
                iuSucursal = new Sucursal();
                iuSucursal.MdiParent = this;
                iuSucursal.Show();
            }
        }

        private void modificarUsuarioToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Modificar_Usuario iuModificarUsuario = new Modificar_Usuario();
            bool isOpen = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Text == "Modificar usuario")
                {
                    isOpen = true;
                    f.Focus();
                    break;
                }
            }
            if (isOpen == false)
            {
                iuModificarUsuario = new Modificar_Usuario(UsuarioSistema);
                iuModificarUsuario.MdiParent = this;
                iuModificarUsuario.Show();
            }
        }

        private void toolStripButton1_Click_1(object sender, EventArgs e)
        {
            FormularioReporte iuFormularioReporte = new FormularioReporte();
            bool isOpen = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Text == "Reportes")
                {
                    isOpen = true;
                    f.Focus();
                    break;
                }
            }
            if (isOpen == false)
            {
                iuFormularioReporte = new FormularioReporte();
                iuFormularioReporte.MdiParent = this;
                iuFormularioReporte.Show();
            }
        }

        private void modificarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ModificarEquipo iuFormularioModificarEquipo = new ModificarEquipo();
            bool isOpen = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Text == "Modificar equipo")
                {
                    isOpen = true;
                    f.Focus();
                    break;
                }
            }
            if (isOpen == false)
            {
                iuFormularioModificarEquipo = new ModificarEquipo(UsuarioSistema);
                iuFormularioModificarEquipo.MdiParent = this;
                iuFormularioModificarEquipo.Show();
            }
        }

        private void liberarEquipoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LiberarEquipo iuLiberarEquipo;
            bool isOpen = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Text == "Liberar equipo")
                {
                    isOpen = true;
                    f.Focus();
                    break;
                }
            }
            if (isOpen == false)
            {
                iuLiberarEquipo = new LiberarEquipo(UsuarioSistema);
                iuLiberarEquipo.MdiParent = this;
                iuLiberarEquipo.Show();
            }
        }

        private void darDeBajaAEquipoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DarBajaEquipo iuDarBajaEquipo;
            bool isOpen = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Text == "Dar de baja a equipo")
                {
                    isOpen = true;
                    f.Focus();
                    break;
                }
            }
            if (isOpen == false)
            {
                iuDarBajaEquipo = new DarBajaEquipo(UsuarioSistema);
                iuDarBajaEquipo.MdiParent = this;
                iuDarBajaEquipo.Show();
            }
        }

        private void Principal_FormClosed(object sender, FormClosedEventArgs e)
        {
            Application.Exit();
        }

        private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
        {
            AboutBox iuAcercDe = new AboutBox();
            iuAcercDe.ShowDialog(this);
        }
    }
}
